#ifndef __IMPLEMENTATION_H
#define __IMPLEMENTATION_H

#include "pid.h"

#define Rc 80  		//采样电阻
#define Vref 3.27f 
#define CIRCLE 50 

#define CLRT_VALUE 0

#define I_MAX 2.3f

extern uint16_t circle;



typedef enum 
{
	ON = 0,
	OFF =!ON
}LM2596_State;


//PA0 -> Ui
//PA1 -> Uc+
typedef struct 
{
	float Ui;
	float Uc;// 1/6的负载电压
	float Uout;
	float Ic;// 
	uint8_t state; // 1是恒压源，2是恒流源， 0是关断状态
	float Uset;
	float Iset;
	float Voltage_Ture;//通过stm32内部基准计算得到的电压
	
	
}Data_TypedefStruct;

void Driever_Init(void);
void Data_Struct_Init(Data_TypedefStruct* hdata);

void VI_Detect(uint32_t* data, Data_TypedefStruct* hdata);
void Get_VI(Data_TypedefStruct* hdata, float* arr_v, float* arr_i);
void Input_Value(Data_TypedefStruct* hdata);

void SetValue(Data_TypedefStruct* hdata);

void Set_const_V(float Value, float fb);
float PI_Control_V(Data_TypedefStruct* hdata);

void Set_const_I(float Value, float fb);
float PI_Control_A(Data_TypedefStruct* hdata);

void OLED_SHOW(Data_TypedefStruct* hdata);
void USART_Send(Data_TypedefStruct* hdata);

void ON_OFF_Init(void);
void ON_OFF_SET(LM2596_State State);

#endif 
